home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Resources / Online / Term / Extras / Source / term-source.lha / MiscPanel.c < prev    next >
C/C++ Source or Header  |  1996-10-20  |  10KB  |  431 lines

  1. /*
  2. **    MiscPanel.c
  3. **
  4. **    Editing panel for miscellaneous parts of the configuration
  5. **
  6. **    Copyright © 1990-1996 by Olaf `Olsen' Barthel
  7. **        All Rights Reserved
  8. **
  9. **    :ts=4
  10. */
  11.  
  12. #ifndef _GLOBAL_H
  13. #include "Global.h"
  14. #endif
  15.  
  16. enum    {    GAD_USE=1000,GAD_CANCEL,
  17.             GAD_PAGER,GAD_PAGEGROUP,
  18.             GAD_REQUESTERMODE,GAD_SET_REQUESTERSIZE,
  19.             GAD_WAITSTRING,GAD_CONSOLE_OUTPUT_WINDOW
  20.         };
  21.  
  22. STATIC STRPTR SAVE_DS STACKARGS
  23. MiscShowSeconds(struct Gadget *UnusedGadget,LONG Level)
  24. {
  25.     STATIC UBYTE Buffer[15];
  26.  
  27.     LimitedSPrintf(sizeof(Buffer),Buffer,LocaleString(MSG_GLOBAL_SHOW_MINUTES_TXT),Level / 60,Level % 60);
  28.  
  29.     return(Buffer);
  30. }
  31.  
  32. STATIC LONG SAVE_DS STACKARGS
  33. ShowSize(struct Gadget *UnusedGadget,LONG Level)
  34. {
  35.     return(1L << Level);
  36. }
  37.  
  38. BOOL
  39. MiscPanel(struct Window *Parent,struct Configuration *LocalConfig)
  40. {
  41.     STATIC LONG PageTitleID[] =
  42.     {
  43.         MSG_V36_0107,
  44.         MSG_V36_0108,
  45.         MSG_USER_INTERFACE_TXT,
  46.         -1
  47.     };
  48.  
  49.     STATIC BYTE InitialPage = 0;
  50.  
  51.     LayoutHandle *Handle;
  52.     BOOL UseIt;
  53.  
  54.     UseIt = FALSE;
  55.  
  56.     SaveConfig(LocalConfig,PrivateConfig);
  57.  
  58.     if(Handle = LT_CreateHandleTags(Parent->WScreen,
  59.         LAHN_LocaleHook,    &LocaleHook,
  60.         LAHN_ExitFlush,    FALSE,
  61.     TAG_DONE))
  62.     {
  63.         struct Window *PanelWindow;
  64.         LONG BufferSize,i;
  65.  
  66.         for(i = 0 ; i < 32 ; i++)
  67.         {
  68.             if((1L << i) == PrivateConfig->MiscConfig->IOBufferSize)
  69.             {
  70.                 BufferSize = i;
  71.  
  72.                 break;
  73.             }
  74.         }
  75.  
  76.         LT_New(Handle,
  77.             LA_Type,VERTICAL_KIND,
  78.         TAG_DONE);
  79.         {
  80.             LT_New(Handle,
  81.                 LA_Type,VERTICAL_KIND,
  82.             TAG_DONE);
  83.             {
  84.                 LT_New(Handle,
  85.                     LA_Type,        TAB_KIND,
  86.                     LA_ID,            GAD_PAGER,
  87.                     LA_LabelID,        MSG_XFER_PAGE_TXT,
  88.                     LACY_LabelTable,PageTitleID,
  89.                     LACY_AutoPageID,GAD_PAGEGROUP,
  90.                     LACY_TabKey,    TRUE,
  91.                     LA_BYTE,        &InitialPage,
  92.                     LATB_FullWidth,    TRUE,
  93.                 TAG_DONE);
  94.  
  95.                 LT_EndGroup(Handle);
  96.             }
  97.  
  98.             LT_New(Handle,
  99.                 LA_Type,        VERTICAL_KIND,
  100.                 LA_ID,            GAD_PAGEGROUP,
  101.                 LAGR_ActivePage,InitialPage,
  102.             TAG_DONE);
  103.             {
  104.                 LT_New(Handle,
  105.                     LA_Type,    VERTICAL_KIND,
  106.                 TAG_DONE);
  107.                 {
  108.                     LT_New(Handle,
  109.                         LA_Type,    CHECKBOX_KIND,
  110.                         LA_LabelID,    MSG_MISCPANEL_BACKUP_CONFIGURATION_GAD,
  111.                         LA_BYTE,    &PrivateConfig->MiscConfig->BackupConfig,
  112.                     TAG_DONE);
  113.  
  114.                     LT_New(Handle,
  115.                         LA_Type,    CHECKBOX_KIND,
  116.                         LA_LabelID,    MSG_MISCPANEL_SHOW_FAST_MACROS_GAD,
  117.                         LA_BYTE,    &PrivateConfig->MiscConfig->OpenFastMacroPanel,
  118.                     TAG_DONE);
  119.  
  120.                     LT_New(Handle,
  121.                         LA_Type,    CHECKBOX_KIND,
  122.                         LA_LabelID,    MSG_MISCPANEL_RELEASE_SERIAL_DEVICE_GAD,
  123.                         LA_BYTE,    &PrivateConfig->MiscConfig->ReleaseDevice,
  124.                     TAG_DONE);
  125.  
  126.                     LT_New(Handle,
  127.                         LA_Type,    CHECKBOX_KIND,
  128.                         LA_LabelID,    MSG_MISCPANEL_SIMPLE_IO_GAD,
  129.                         LA_BYTE,    &PrivateConfig->MiscConfig->SimpleIO,
  130.                     TAG_DONE);
  131.  
  132.                     LT_New(Handle,
  133.                         LA_Type,    CHECKBOX_KIND,
  134.                         LA_LabelID,    MSG_OVERWRITE_WARNING_TXT,
  135.                         LA_BYTE,    &PrivateConfig->MiscConfig->ProtectiveMode,
  136.                     TAG_DONE);
  137.  
  138.                     LT_New(Handle,
  139.                         LA_Type,    CHECKBOX_KIND,
  140.                         LA_LabelID,    MSG_MISCPANEL_CREATE_ICONS_GAD,
  141.                         LA_BYTE,    &PrivateConfig->MiscConfig->CreateIcons,
  142.                     TAG_DONE);
  143.  
  144.                     LT_New(Handle,
  145.                         LA_Type,    XBAR_KIND,
  146.                     TAG_DONE);
  147.  
  148.                     LT_New(Handle,
  149.                         LA_Type,        STRING_KIND,
  150.                         LA_ID,            GAD_WAITSTRING,
  151.                         LA_LabelID,        MSG_WAIT_STRING,
  152.                         LA_STRPTR,        PrivateConfig->MiscConfig->WaitString,
  153.                         LA_Chars,        20,
  154.                         GTST_MaxChars,    sizeof(PrivateConfig->MiscConfig->WaitString) - 1,
  155.                     TAG_DONE);
  156.  
  157.                     if(PrivateConfig->MiscConfig->WaitDelay < 1)
  158.                         PrivateConfig->MiscConfig->WaitDelay = 1;
  159.  
  160.                     LT_New(Handle,
  161.                         LA_Type,            SliderType,
  162.                         LA_LabelID,            MSG_WAIT_DELAY_GAD,
  163.                         LA_LONG,            &PrivateConfig->MiscConfig->WaitDelay,
  164.                         GTSL_Min,            1,
  165.                         GTSL_Max,            60 * 60,
  166.                         GTSL_DispFunc,        MiscShowSeconds,
  167.                         GTSL_LevelFormat,    "%s",
  168.                     TAG_DONE);
  169.  
  170.                     LT_EndGroup(Handle);
  171.                 }
  172.  
  173.                 LT_New(Handle,
  174.                     LA_Type,    VERTICAL_KIND,
  175.                 TAG_DONE);
  176.                 {
  177.                     LT_New(Handle,
  178.                         LA_Type,            SliderType,
  179.                         LA_LabelID,            MSG_MISCPANEL_PROGRAM_PRIORITY_GAD,
  180.                         GTSL_Min,            -128,
  181.                         GTSL_Max,             127,
  182.                         GTSL_LevelFormat,    "%4ld",
  183.                         LA_BYTE,            &PrivateConfig->MiscConfig->Priority,
  184.                         LA_Chars,            12,
  185.                     TAG_DONE);
  186.  
  187.                     LT_New(Handle,
  188.                         LA_Type,            SliderType,
  189.                         LA_LabelID,            MSG_V36_1810,
  190.                         LA_LONG,            &BufferSize,
  191.                         GTSL_Min,            12,
  192.                         GTSL_Max,            20,
  193.                         GTSL_DispFunc,        ShowSize,
  194.                         GTSL_LevelFormat,    LocaleBase ? "%7lD" : "%7ld",
  195.                     TAG_DONE);
  196.  
  197.                     LT_New(Handle,
  198.                         LA_Type,    XBAR_KIND,
  199.                     TAG_DONE);
  200.  
  201.                     LT_New(Handle,
  202.                         LA_Type,        STRING_KIND,
  203.                         LA_ID,            GAD_CONSOLE_OUTPUT_WINDOW,
  204.                         LA_LabelID,        MSG_CONSOLE_OUTPUT_WINDOW_TXT,
  205.                         LA_STRPTR,        PrivateConfig->MiscConfig->WindowName,
  206.                         LA_Chars,        30,
  207.                         GTST_MaxChars,    sizeof(PrivateConfig->MiscConfig->WindowName) - 1,
  208.                     TAG_DONE);
  209.  
  210.                     LT_New(Handle,
  211.                         LA_Type,    CHECKBOX_KIND,
  212.                         LA_LabelID,    MSG_SUPPRESS_OUTPUT_GAD,
  213.                         LA_BYTE,    &PrivateConfig->MiscConfig->SuppressOutput,
  214.                     TAG_DONE);
  215.  
  216.                     LT_EndGroup(Handle);
  217.                 }
  218.  
  219.                 LT_New(Handle,
  220.                     LA_Type,    VERTICAL_KIND,
  221.                 TAG_DONE);
  222.                 {
  223.                     LT_New(Handle,
  224.                         LA_Type,        CYCLE_KIND,
  225.                         LA_LabelID,        MSG_TERMINALPANEL_ALERT_GAD,
  226.                         LA_BYTE,        &PrivateConfig->MiscConfig->AlertMode,
  227.                         LACY_FirstLabel,MSG_TERMINALPANEL_ALERT_NONE_TXT,
  228.                         LACY_LastLabel,    MSG_TERMINALPANEL_ALERT_SIGNAL_SCREEN_TXT,
  229.                     TAG_DONE);
  230.  
  231.                     LT_New(Handle,
  232.                         LA_Type,    XBAR_KIND,
  233.                     TAG_DONE);
  234.  
  235.                     LT_New(Handle,
  236.                         LA_Type,        CYCLE_KIND,
  237.                         LA_LabelID,        MSG_REQUESTER_DIMENSIONS_TXT,
  238.                         LA_BYTE,        &PrivateConfig->MiscConfig->RequesterMode,
  239.                         LACY_FirstLabel,MSG_LABEL_CENTRE_TXT,
  240.                         LACY_LastLabel,    MSG_LABEL_IGNORE_TXT,
  241.                         LA_ID,            GAD_REQUESTERMODE,
  242.                     TAG_DONE);
  243.  
  244.                     LT_New(Handle,
  245.                         LA_Type,        BUTTON_KIND,
  246.                         LA_LabelID,        MSG_REQUESTER_EDIT_SIZE_TXT,
  247.                         LA_ID,            GAD_SET_REQUESTERSIZE,
  248.                         GA_Disabled,    PrivateConfig->MiscConfig->RequesterMode == REQUESTERMODE_IGNORE,
  249.                     TAG_DONE);
  250.  
  251.                     LT_EndGroup(Handle);
  252.                 }
  253.  
  254.                 LT_EndGroup(Handle);
  255.             }
  256.  
  257.             LT_New(Handle,
  258.                 LA_Type,VERTICAL_KIND,
  259.             TAG_DONE);
  260.             {
  261.                 LT_New(Handle,
  262.                     LA_Type,        XBAR_KIND,
  263.                     LAXB_FullSize,    TRUE,
  264.                 TAG_DONE);
  265.  
  266.                 LT_EndGroup(Handle);
  267.             }
  268.  
  269.             LT_New(Handle,LA_Type,HORIZONTAL_KIND,
  270.                 LAGR_SameSize,    TRUE,
  271.                 LAGR_Spread,    TRUE,
  272.             TAG_DONE);
  273.             {
  274.                 LT_New(Handle,
  275.                     LA_Type,        BUTTON_KIND,
  276.                     LA_LabelID,        MSG_GLOBAL_USE_GAD,
  277.                     LA_ID,            GAD_USE,
  278.                     LABT_ReturnKey,    TRUE,
  279.                     LABT_ExtraFat,    TRUE,
  280.                 TAG_DONE);
  281.  
  282.                 LT_New(Handle,
  283.                     LA_Type,        BUTTON_KIND,
  284.                     LA_LabelID,        MSG_GLOBAL_CANCEL_GAD,
  285.                     LA_ID,            GAD_CANCEL,
  286.                     LABT_EscKey,    TRUE,
  287.                     LABT_ExtraFat,    TRUE,
  288.                 TAG_DONE);
  289.  
  290.                 LT_EndGroup(Handle);
  291.             }
  292.  
  293.             LT_EndGroup(Handle);
  294.         }
  295.  
  296.         if(PanelWindow = LT_Build(Handle,
  297.             LAWN_TitleID,        MSG_MISCPANEL_MISCELLANEOUS_PREFERENCES_TXT,
  298.             LAWN_HelpHook,        &GuideHook,
  299.             LAWN_Parent,        Parent,
  300.             WA_DepthGadget,        TRUE,
  301.             WA_DragBar,            TRUE,
  302.             WA_RMBTrap,            TRUE,
  303.             WA_Activate,        TRUE,
  304.             WA_SimpleRefresh,    TRUE,
  305.         TAG_DONE))
  306.         {
  307.             struct FileRequester *FileRequester;
  308.             struct IntuiMessage    *Message;
  309.             struct Gadget *MsgGadget;
  310.             BOOL JustCreated;
  311.             ULONG MsgClass;
  312.             BOOL Done;
  313.  
  314.             FileRequester = NULL;
  315.  
  316.             GuideContext(CONTEXT_MISC);
  317.  
  318.             PushWindow(PanelWindow);
  319.  
  320.             LT_ShowWindow(Handle,TRUE);
  321.  
  322.             JustCreated = FALSE;
  323.             Done = FALSE;
  324.  
  325.             do
  326.             {
  327.                 if(Wait(PORTMASK(PanelWindow->UserPort) | SIG_BREAK) & SIG_BREAK)
  328.                     break;
  329.  
  330.                 while(Message = (struct IntuiMessage *)LT_GetIMsg(Handle))
  331.                 {
  332.                     MsgClass    = Message->Class;
  333.                     MsgGadget    = (struct Gadget *)Message->IAddress;
  334.  
  335.                     LT_ReplyIMsg(Message);
  336.  
  337.                     if(MsgClass == IDCMP_GADGETUP)
  338.                     {
  339.                         switch(MsgGadget->GadgetID)
  340.                         {
  341.                             case GAD_REQUESTERMODE:
  342.  
  343.                                 LT_SetAttributes(Handle,GAD_SET_REQUESTERSIZE,
  344.                                     GA_Disabled,PrivateConfig->MiscConfig->RequesterMode == REQUESTERMODE_IGNORE,
  345.                                 TAG_DONE);
  346.  
  347.                                 break;
  348.  
  349.                             case GAD_SET_REQUESTERSIZE:
  350.  
  351.                                 LT_LockWindow(PanelWindow);
  352.  
  353.                                 if(!FileRequester)
  354.                                 {
  355.                                     if(FileRequester = (struct FileRequester *)AllocAslRequestTags(ASL_FileRequest,
  356.                                         ASLFR_Window,        PanelWindow,
  357.                                         ASLFR_TitleText,    LocaleString(MSG_MOVE_RESIZE_THIS_WINDOW_TXT),
  358.                                         ASLFR_PositiveText,    LocaleString(MSG_GLOBAL_USE_GAD),
  359.                                         ASLFR_Flags1,        FILF_NEWIDCMP,
  360.                                     TAG_DONE))
  361.                                         JustCreated = TRUE;
  362.                                 }
  363.  
  364.                                 if(FileRequester)
  365.                                 {
  366.                                     BOOL Result;
  367.  
  368.                                     if(JustCreated && (!PrivateConfig->MiscConfig->RequesterWidth || !PrivateConfig->MiscConfig->RequesterHeight))
  369.                                         JustCreated = FALSE;
  370.  
  371.                                     Result = AslRequestTags(FileRequester,
  372.                                         ASLFR_InitialLeftEdge,                Window->LeftEdge + PrivateConfig->MiscConfig->RequesterLeft,
  373.                                         ASLFR_InitialTopEdge,                Window->TopEdge + PrivateConfig->MiscConfig->RequesterTop,
  374.                                         JustCreated ? ASLFR_InitialWidth : TAG_IGNORE,    PrivateConfig->MiscConfig->RequesterWidth,
  375.                                         JustCreated ? ASLFR_InitialHeight : TAG_IGNORE,    PrivateConfig->MiscConfig->RequesterHeight,
  376.                                     TAG_DONE);
  377.  
  378.                                     if(!Result && IoErr())
  379.                                         Result = AslRequest(FileRequester,NULL);
  380.  
  381.                                     if(Result)
  382.                                     {
  383.                                         PrivateConfig->MiscConfig->RequesterLeft    = FileRequester->fr_LeftEdge - Window->LeftEdge;
  384.                                         PrivateConfig->MiscConfig->RequesterTop        = FileRequester->fr_TopEdge - Window->TopEdge;
  385.                                         PrivateConfig->MiscConfig->RequesterWidth    = FileRequester->fr_Width;
  386.                                         PrivateConfig->MiscConfig->RequesterHeight    = FileRequester->fr_Height;
  387.                                     }
  388.  
  389.                                     JustCreated = FALSE;
  390.                                 }
  391.  
  392.                                 LT_UnlockWindow(PanelWindow);
  393.  
  394.                                 break;
  395.  
  396.                             case GAD_USE:
  397.  
  398.                                 LT_UpdateStrings(Handle);
  399.  
  400.                                 PrivateConfig->MiscConfig->IOBufferSize = 1L << BufferSize;
  401.  
  402.                                 UseIt = Done = TRUE;
  403.                                 break;
  404.  
  405.                             case GAD_CANCEL:
  406.  
  407.                                 Done = TRUE;
  408.                                 break;
  409.                         }
  410.                     }
  411.                 }
  412.             }
  413.             while(!Done);
  414.  
  415.             if(FileRequester)
  416.                 FreeAslRequest(FileRequester);
  417.  
  418.             PopWindow();
  419.         }
  420.  
  421.         LT_DeleteHandle(Handle);
  422.     }
  423.  
  424.     if(UseIt)
  425.         SwapConfig(LocalConfig,PrivateConfig);
  426.     else
  427.         SaveConfig(LocalConfig,PrivateConfig);
  428.  
  429.     return(UseIt);
  430. }
  431.